
/*
 * Desenvolvimento para WEB
 * 
 * NOME: Vitor Augusto Graciani           RA: 345270
 * NOME: Felipe Petruz Brina              RA: 345083
 * NOME: Diego Zamboni Latance            RA: 344990
 * NOME: Rafael Claudio Domene            RA: 345040
 * NOME: Vinicius Rodrigues de Campos     RA: 345350
 * 
 */
package model;

import auxiliar.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;

public class ConsultaCategoriaDAO {
    
    private Connection conn;
    
    public ConsultaCategoriaDAO() throws DAOException {
        try {
            this.conn = ConnectionFactory.getConnection();
            
        } catch (Exception e) {
            throw new DAOException("Erro: " + ":\n" + e.getMessage());
        }
    }

    //Cadastra a categoria no banco Lista? **************************************************************
    public void cadastroCategoria(ConsultaCategoriaBEAN categoria) throws DAOException {
        PreparedStatement ps = null;
        Connection conn = null;
        if (categoria == null) {
            throw new DAOException("Categoria nao pode ser vazia");
        }
        try {

            String cat = categoria.getCategoria();
            
            String SQL = "EXECUTE cadastraCategoria '"+cat+"'";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            ps.executeUpdate();
        } catch (SQLException sqle) {
            throw new DAOException("Erros ao inserir dados; ");
        } finally {
            ConnectionFactory.closeConnection(conn, ps);
        }
    }

    // consulta categoria do banco
    public ConsultaCategoriaBEAN consultaCategoria(String categoria) throws DAOException {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        ConsultaCategoriaBEAN novo = null;
        try {
            
            String SQL = "EXECUTE consultaCategoria '" + categoria + "'";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            while (rs.next()) {
                String Cat = rs.getObject("categorie").toString();
                int cid = Integer.parseInt(rs.getObject("cid").toString());
                novo = new ConsultaCategoriaBEAN(Cat, cid);
            }
            
            
            return novo;
        } catch (SQLException sqle) {
            throw new DAOException(sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }
    
    public void alteraCategoria(ConsultaCategoriaBEAN alteraCategoria) throws DAOException {
        
        PreparedStatement ps = null;
        Connection conn = null;
        if (alteraCategoria == null) {
            throw new DAOException("Categoria nao pode ser vazia");
        }
        try {
            
            String categoria = alteraCategoria.getCategoria();
            int cid = alteraCategoria.getCid();
            
            String SQL = "EXECUTE atualizaCategoria '" + categoria + "', " + cid;
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            ps.executeUpdate();
        } catch (SQLException sqle) {
            throw new DAOException("Erros ao inserir dados: " + sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps);
        }
    }
    
    public void removeCategoria(ConsultaCategoriaBEAN removeCategoria) throws DAOException {
        
        PreparedStatement ps = null;
        Connection conn = null;
        if (removeCategoria == null) {
            throw new DAOException("Categoria nao pode ser vazia");
        }
        try {
            
            int cid = removeCategoria.getCid();
            
            String SQL = "EXECUTE deletaCategoria " + cid;
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            ps.executeUpdate();
        } catch (SQLException sqle) {
            throw new DAOException("Erros ao inserir dados: " + sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps);
        }
    }
}
